/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.ufpr.tads.Rent.view;

import br.ufpr.tads.Rent.controller.EnumClass;
import br.ufpr.tads.Rent.controller.EnumClass.tipo;
import br.ufpr.tads.Rent.model.DevolveDTO;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author vheofacker
 */
//Nome do Cliente,Placa, Marca, Modelo, Ano, Data Locação, Preço Diária, Quantidade de dias locado e Valor Locação
public class ModeloTabelaDevolucao extends AbstractTableModel{
    private String[] colunas=new String[]{"ID Locação","Nome","Placa","Marca", "Modelo","ano","Data de Locação","Preço da diária","Quantidade de dias"," Valor Total","tipo"};

    private List<DevolveDTO> lista=new ArrayList();
    @Override
    public int getRowCount() {
        return this.lista.size();
    }

    @Override
    public int getColumnCount() {
        return this.colunas.length;
    }

    @Override
    public String getColumnName(int index) {
        return this.colunas[index];
    }

    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
        //if(column==0)
            //return false;
        //return true;
    }

    
    public void ModeloTabelaDevolucao(List<DevolveDTO> lista){
        this.lista=lista;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        DevolveDTO dev = lista.get(rowIndex);
        SimpleDateFormat dtp = new SimpleDateFormat("dd/MM/yyyy");
        switch (columnIndex) {
            case 0: return dev.getIdLoc();
            case 1: return dev.getNome();
            case 2: return dev.getPlaca();
            case 3: return dev.getMarca().getNome();
            case 4:if(dev.getTipo()==0){
                        return EnumClass.ModeloAutomovel.values()[dev.getModelo()];
                    }else if(dev.getTipo()==1){
                        return EnumClass.modelomotocicleta.values()[dev.getModelo()];
                    }else{
                        return EnumClass.modelovan.values()[dev.getModelo()].getNome();
                    } 
                
            case 5: return dev.getAno();
            case 6: return dtp.format(dev.getDataloca().getTime());
            case 7: return dev.getDiaria();
            case 8: return dev.getDias();
            case 9: return dev.getTotal();
            case 10: return tipo.values()[dev.getTipo()];
            default : return null;
        }
    }


    public void setListaDevolucao(List<DevolveDTO> lista) {
        this.lista=lista;
        this.fireTableDataChanged();
    }

    public void limpaTabela() {
        int indice = lista.size()-1;
        if(indice<0)
            indice=0;
        this.lista = new ArrayList();
        this.fireTableRowsDeleted(0,indice);//update JTable
    }

    public DevolveDTO getDevolucao(int linha){
        return lista.get(linha);
    }
}
